/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Servlets;

import Conexion.GestionSQL;
import Negocio.Notificacion;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author jorge.correa
 */
public class Acciones extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            
            String strAccion = request.getParameter("txtAccion");
            String strSQL = null;
            
             //Obtener la fecha actual.
                
            Calendar c = Calendar.getInstance();
            String strDia, strMes, strAnio, strFechaActual;

            strDia = Integer.toString(c.get(Calendar.DATE));
            strMes = Integer.toString(c.get(Calendar.MONTH)+1);
            strAnio = Integer.toString(c.get(Calendar.YEAR));                

            if (Integer.parseInt(strMes) < 10){
                strMes = "0" + strMes;
            }
            
            strFechaActual = strAnio + "-" + strMes + "-" + strDia; 
            
            if (strAccion.equals("BP")){
                String strNumId = request.getParameter("txtNumId");
                
                strSQL = "select p.txtIdentificacion, p.txtNombre, p.txtTipoPersona, t.txtNombre, p.txtDireccion, p.txtTelefono, p.txtEmail, p.txtMiembroUDEA, p.txtNombreContacto from tbl_personas p, tbl_tipos_persona t where (p.txtTipoPersona = t.txtCodigo) and p.txtIdentificacion = '" + strNumId +"'";
                String[] strDatosUsuario = GestionSQL.getFila(strSQL);
                
                if (strDatosUsuario != null){
                    out.println("<html>");
                    out.println("<head>");
                    out.println("</head>");
                    out.println("<body>");                               
                    out.println("<table cellspacing='0' cellpadding='4' border='0' class='TABLACONTENEDORA'>"); 
                    out.println("<tr><td style='height: 0px;'></td></tr>"); 
                    out.println("<tr>"); 
                    out.println("<td class='LABELFORM'><label for='txtId' id='lblId'>Nro. de identificación:</label></td>"); 
                    out.println("<td class='CELDACAMPOFORM'>"); 
                    out.println(" <input type='text' name='txtId' id='txtId' value= '" + strDatosUsuario[0] + "' class='CAMPOFORM' readonly disabled='disabled'>");                               
                    out.println("</td>");                    
                    out.println("<td class='LABELFORM'><label for='txtNombre' id='lblNombre'>Nombre completo:</label></td>"); 
                    out.println("<td class='CELDACAMPOFORM'>"); 
                    out.println("<input type='text' name='txtNombre' id='txtNombre' value= '" + strDatosUsuario[1] + "' class='CAMPOFORM' readonly disabled='disabled'>");                                         
                    out.println("</td>");                    
                    out.println("</tr>"); 
                    out.println("<tr>"); 
                    out.println("<td class='LABELFORM'><label for='txtTipoPersona' id='lblTipoPersona'>Tipo de persona:</label></td>"); 
                    out.println("<td class='CELDACAMPOFORM'>");          
                    out.println("<input type='hidden' name='txtTipoPersona' id='txtTipoPersona' value= '" + strDatosUsuario[2] + "' class='CAMPOFORM'>");  
                    out.println("<input type='text' name='txtTipoPersonaC' id='txtTipoPersonaC' value= '" + strDatosUsuario[3] + "' class='CAMPOFORM' readonly disabled='disabled'>");
                    out.println("</td>");                     
                    out.println("<td class='LABELFORM'><label for='txtDireccion' id='lblDireccion'>Dirección:</label></td>"); 
                    out.println("<td class='CELDACAMPOFORM'>"); 
                    out.println("<input type='text' name='txtDireccion' id='txtDireccion' value= '" + strDatosUsuario[4] + "' class='CAMPOFORM' readonly disabled='disabled'>");                                         
                    out.println("</td>");                      
                    out.println("</tr>"); 
                    out.println("<tr>"); 
                    out.println("<td class='LABELFORM'><label for='txtTelefono' id='lblTelefono'>Teléfono:</label></td>"); 
                    out.println("<td class='CELDACAMPOFORM'>"); 
                    out.println("<input type='text' name='txtTelefono' id='txtTelefono' value= '" + strDatosUsuario[5] + "' class='CAMPOFORM' readonly disabled='disabled'>");                                         
                    out.println("</td>");                     
                    out.println("<td class='LABELFORM'><label for='txtEmail' id='lblEmail'>Correo electrónico:</label></td>"); 
                    out.println("<td class='CELDACAMPOFORM'>"); 
                    out.println("<input type='text' name='txtEmail' id='txtEmail' value= '" + strDatosUsuario[6] + "' class='CAMPOFORM' readonly disabled='disabled'> ");                                        
                    out.println("</td>");                     
                    out.println("</tr>"); 
                    out.println("<tr>"); 
                    out.println("<td class='LABELFORM'><label for='txtEsMiembro' id='lblEsMiembro'>¿Es miembro UdeA?:</label></td>"); 
                    out.println("<td class='CELDARADIOFORM'>"); 
                    out.println("<input type='hidden' name='rdEsMiembro' id='rdEsMiembro' value= '" + strDatosUsuario[7] + "' class='CAMPOFORM'>");
                    if (strDatosUsuario[7].equals("S")){
                         out.println("<input type='text' name='rdEsMiembroC' id='rdEsMiembroC' value= 'Si' class='CAMPOFORM' readonly disabled='disabled'>");
                    }else{
                         out.println("<input type='text' name='rdEsMiembroC' id='rdEsMiembroC' value= 'No' class='CAMPOFORM' readonly disabled='disabled'>");
                    }                          
                    out.println("</td>");                     
                    if (strDatosUsuario[2].equals("JUR")){
                        out.println("<td class='LABELFORM'><label for='txtNombreC' id='lblNombreC'>Nombre del contacto:</label></td>"); 
                        out.println("<td class='CELDACAMPOFORM'>"); 
                        out.println("<input type='text' name='txtNombreC' id='txtNombreC' value= '" + strDatosUsuario[8] + "' class='CAMPOFORM' readonly disabled='disabled'>");                                
                        out.println("</td>");                         
                    }                                                                            
                    out.println("</tr>"); 
                    out.println("<tr><td style='height: 0px;'></td></tr>"); 
                    out.println("</table>"); 
                    out.println("</body>");
                    out.println("</html>");                    
                }else{
                    out.println("<html>");
                    out.println("<head>");
                    out.println("</head>");
                    out.println("<body>");
                    out.println("<br />");
                    out.println("<div class='TEXTOFALLO'>No se encontraron datos para la identificación " + strNumId + ". Por favor verifíquelo o seleccione la opción 'No' para ingresar sus datos.</div>");
                    out.println("<br />");
                    out.println("</body>");
                    out.println("</html>");
                }                
            }
            
            if (strAccion.equals("Cambiar_Resp")){
                String strResponsable = request.getParameter("txtResponsable");
                String strCodigo = request.getParameter("txtConsecutivo");
                String strMensaje = null;
                
                strSQL = "update tbl_solicitudes set txtIdReponsable = '" + strResponsable + "' where txtConsecutivo = '" + strCodigo + "'";
                strMensaje = GestionSQL.ejecuta(strSQL);
                
                if (strMensaje == null){
                    out.println("<html>");
                    out.println("<head>");
                    out.println("</head>");
                    out.println("<body>");
                    out.println("<div class='TEXTOEXITO'>");                                                     
                    out.println("El responsable fue actualizado correctamente!.");                  
                    out.println("</div>");                   
                    out.println("</body>");
                    out.println("</html>");  
                    
                    Notificacion n = new Notificacion();
                    n.notificarAsignacion(strCodigo,strResponsable);
                    
                }else{
                    out.println("<html>");
                    out.println("<head>");
                    out.println("</head>");
                    out.println("<body>");
                    out.println("<div class='TEXTOFALLO'>");
                    out.println("Se produjo el siguiente error al actualizar el responsable: " + strMensaje);
                    out.println("</div>");                  
                    out.println("</body>");
                    out.println("</html>");
                }
                
            }
            
            if (strAccion.equals("FINSOL")){
                String strIdEstado = request.getParameter("txtIdEstado");
                String strCodigo = request.getParameter("txtConsecutivo");
                String strFechaRecibo = request.getParameter("txtFechaRecibo");   
                String strTipoConsulta = request.getParameter("txtTipoConsulta");  
                String strMensaje = null;        
                String[] strNumCom = null;
                final long MILLSECS_PER_DAY = 24 * 60 * 60 * 1000;
                Long lgDiferencia;
                
                if (!strTipoConsulta.equals("COT")){
                         strSQL = "select count(*) from tbl_comentarios_x_solicitud c where c.txtIdSolicitud = '" + strCodigo + "'";
                         strNumCom = GestionSQL.getFila(strSQL);                    
                }
                
                if ((strNumCom == null) || (Integer.parseInt(strNumCom[0]) > 0)){
                    SimpleDateFormat sdfFechaRecibo = new SimpleDateFormat("yyyy-MM-dd");
                    Date dtFechaRecibo = null;

                    try{                            
                        dtFechaRecibo = sdfFechaRecibo.parse(strFechaRecibo);                        
                    }catch(ParseException pe){
                        pe.printStackTrace();
                    }

                    SimpleDateFormat sdfFechaActual = new SimpleDateFormat("yyyy-MM-dd");
                    Date dtFechaActual = null;

                    try{                            
                        dtFechaActual = sdfFechaActual.parse(strFechaActual);                        
                    }catch(ParseException pe){
                        pe.printStackTrace();
                    }

                    lgDiferencia = (dtFechaActual.getTime() - dtFechaRecibo.getTime()) / MILLSECS_PER_DAY;

                    strSQL = "update tbl_solicitudes set txtIdEstado = '" + strIdEstado + "', dtFechaFinalizacion = '" + strFechaActual + "', txtNumDiasRpta = '" + lgDiferencia.toString() + "' where txtConsecutivo = '" + strCodigo + "'";
                    strMensaje = GestionSQL.ejecuta(strSQL);

                    if (strMensaje == null){
                        out.println("<html>");
                        out.println("<head>");
                        out.println("</head>");
                        out.println("<body>");
                        out.println("<div class='TEXTOEXITO'>");                                                     
                        out.println("La solicitud fue finalizada correctamente!.");                  
                        out.println("<script type='text/javascript'>");
                        out.println("setTimeout(function(){window.close();},3000);");
                        out.println("</script>");
                        out.println("</div>");                   
                        out.println("</body>");
                        out.println("</html>");                          
                         
                        Notificacion n = new Notificacion();
                        n.notificarFinalizacion(strCodigo);

                    }else{
                        out.println("<html>");
                        out.println("<head>");
                        out.println("</head>");
                        out.println("<body>");
                        out.println("<div class='TEXTOFALLO'>");
                        out.println("Se produjo el siguiente error al finalizar la soliccitud: " + strMensaje);
                        out.println("</div>");                  
                        out.println("</body>");
                        out.println("</html>");
                    }
                }else{
                        out.println("<html>");
                        out.println("<head>");
                        out.println("</head>");
                        out.println("<body>");
                        out.println("<div class='TEXTOFALLO'>");
                        out.println("No se puede finalizar la solicitud ya que no cuenta por lo menos con un comentario del especialista.");
                        out.println("</div>");                  
                        out.println("</body>");
                        out.println("</html>");
                }
            }
        } finally {            
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
